// src/stores/counter.js
import { defineStore } from 'pinia'

// `defineStore` 的第一个参数是 Store 的唯一 ID，
// 通常使用 kebab-case（比如 'my-counter'）。
// 这是一个必须的参数，Pinia 使用它来连接 Store。
export const useCounterStore = defineStore('counter', {
  // `state` 是 Store 的核心，用来存储数据
  state: () => ({
    count: 0
  }),

  // `getters` 类似于 Vue 的计算属性，用来从 state 中派生出新数据
  getters: {
    doubleCount: (state) => state.count * 2
  },

  // `actions` 用来修改 state，它们可以是同步或异步的
  actions: {
    increment() {
      this.count++
    },
    // 异步 action 的例子
    async incrementAsync() {
      await new Promise(resolve => setTimeout(resolve, 1000))
      this.count++
    }
  },

    //Pinia用于持久化存储 store 数据的配置项
    //要使用该配置，需安装并正确配置 pinia-plugin-persistedstate 插件
    persist: {
        key: 'my-app-counter', // 键名，默认为 Store 的 id，例如 'user'
        storage: sessionStorage,  // 存储方式，默认为 localStorage, 也可以是 sessionStorage
        pick: ['count', ]  //一个数组，包含你希望持久化的 state 属性名。如果省略此项，则会持久化所有属性
    }
})